namespace ScrumSprintMonitor.ConfigEditor.Views.ConfigurationView
{
	#region #using Directives

	using System;
	using System.Collections.Generic;
	using System.Windows.Input;

	#endregion

	public interface IConfigurationViewModel
	{
		bool IsConfigurationWritable { get; }
		bool IsBusy { get; }

		IDictionary<string, Uri> AvailableTfsServers { get; }
		string TfsServerName { get; set; }
		Uri TfsServerUri { get; }
		string TfsServerUserName { get; set; }
		string TfsServerPassword { get; set; }

		string ConfigurationFilePath { get; set; }
		ICommand BrowseSprintConfigurationCommand { get; }
		ICommand EditSprintConfigurationCommand { get; }

		string TeamMembersConfigurationFilePath { get; set; }
		ICommand BrowseTeamMembersConfigurationCommand { get; }
		ICommand GenerateTeamMembersConfigurationCommand { get; }
		ICommand EditTeamMembersConfigurationCommand { get; }

		string PresentationConfigurationFilePath { get; set; }
		ICommand BrowsePresentationConfigurationCommand { get; }
		ICommand EditPresentationConfigurationCommand { get; }

		//bool CanEditMachineWakeUpSetting { get; }
		//bool WakeUpMachine { get; set; }
		//TimeSpan TimeOfDayToWakeUpMachine { get; set; }
		bool CanEditSuspendMachineSetting { get; }
		bool SuspendMachine { get; set; }
		TimeSpan TimeOfDayToSuspendMachine { get; set; }

		bool EnableOutlookIntegration { get; set; }
		bool ConsiderOutlookTentativeAsFreeTime { get; set; }
		bool IsConsiderOutlookTentativeAsFreeTimeEnabled { get; }

		bool IsShowBurndownChartEnabled { get; }
		bool ShowBurndownChart { get; set; }
		bool ReportUnestimatedSprintBacklogItems { get; set; }
		bool InPlanningMode { get; set; }
        bool UseMultipleMonitors { get; set; }
        bool OptInCEIP { get; set; }

		ICommand ViewLogFileCommand { get; }

		ICommand OkCommand { get; }
		ICommand CancelCommand { get; }
		ICommand HelpCommand { get; }

		void OnViewActivated();
	}
}